package yi.wuhenbot.Character;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yi.wuhenbot.dao.CharaterMapper;

/**
 * 战斗类
 * 初始化进度条为100
 * 每回合会增加角色进度条，进度条增加量为位角色速度
 * 速度达到100，角色攻击，如果速度有溢出则设置当前角色进度：当前进度-100，并进行行动
 * 等待调整ing
 * @author wuhen
 */
@Service
public class Character {
    @Autowired
    private CharaterMapper charaterMapper;
    // 设置进度条上限
    private final int speedMax = 100;

    public String twoPersonFight() {
        System.out.println("-------------------------");
        System.out.println("战斗开始");
        // 获取用户初始速度
        double speed1 = charaterMapper.selectSpeed("3b75907540335b7");
        double speed2 = charaterMapper.selectSpeed("784f9b085babdee");
        System.out.println("用户a初始速度：" + speed1);
        System.out.println("用户b初始速度：" + speed2);
        // 记录用户出手进度
        double speed1Num = charaterMapper.selectSpeedNum("3b75907540335b7");
        double speed2Num = charaterMapper.selectSpeedNum("784f9b085babdee");
        System.out.println("用户a当前进度：" + speed1Num);
        System.out.println("用户b当前进度：" + speed2Num);
        System.out.println("开始处理战斗速度");
        String result = "";

        // 使用 while 循环来处理战斗速度
        while (speed1Num <= speedMax || speed2Num <= speedMax) {
            // 每回合增加角色进度条
            speed1Num += speed1;
            speed2Num += speed2;
            System.out.println("用户a当前进度：" + speed1Num);
            System.out.println("用户b当前进度：" + speed2Num);

            // 判断两个用户速度是否大于等于100
            if (speed1Num >= speedMax && speed2Num >= speedMax) {
                // 判断两个用户速度大小
                if (speed1Num > speed2Num) {
                    System.out.println("用户a当前进度：" + speed1Num);
                    System.out.println("用户b当前进度：" + speed2Num);
                    System.out.println("用户a出手");
                    // 更新出手进度
                    charaterMapper.updateSpeedNum("3b75907540335b7", speed1Num -= 100);
                    charaterMapper.updateSpeedNum("784f9b085babdee", speed2Num);

                    // 当前进度
                    System.out.println("用户a当前进度：" + speed1Num + "%");
                    System.out.println("用户b当前进度：" + speed2Num + "%");
                    return "用户a出手";
                } else if (speed1Num < speed2Num) {
                    System.out.println("用户b出手");

                    // 更新出手进度
                    charaterMapper.updateSpeedNum("784f9b085babdee", speed2Num -= 100);
                    charaterMapper.updateSpeedNum("3b75907540335b7", speed1Num);
                    // 当前进度
                    System.out.println("用户a当前进度：" + speed1Num + "%");
                    System.out.println("用户b当前进度：" + speed2Num + "%");
                    return "用户b出手";
                }
            } else if (speed1Num >= speedMax) {
                System.out.println("用户a出手");
                // 更新出手进度
                charaterMapper.updateSpeedNum("3b75907540335b7", speed1Num -= 100);
                charaterMapper.updateSpeedNum("784f9b085babdee", speed2Num);
                // 如果b用户速度不到100，则增加速度
                // 当前进度
                System.out.println("用户a当前进度：" + speed1Num + "%");
                System.out.println("用户b当前进度：" + speed2Num + "%");
                return "用户a出手";
            } else if (speed2Num >= speedMax) {
                System.out.println("用户b出手");
                // 更新出手进度
                charaterMapper.updateSpeedNum("784f9b085babdee", speed2Num -= 100);
                charaterMapper.updateSpeedNum("3b75907540335b7", speed1Num);
                // 当前进度
                System.out.println("用户a当前进度：" + speed1Num + "%");
                System.out.println("用户b当前进度：" + speed2Num + "%");
                return "用户b出手";
            }
        }
        return result;

    }
}